/**
 * 班次相关 API
 */

import type { Shift } from '../types'
import { get, post, patch, del } from './request'
import { API_ENDPOINTS } from './config'

/**
 * 获取所有班次
 */
export function getShifts(): Promise<Shift[]> {
  return get<Shift[]>(API_ENDPOINTS.shifts)
}

/**
 * 根据日期范围获取班次
 */
export function getShiftsByDateRange(start: string, end: string): Promise<Shift[]> {
  return get<Shift[]>(API_ENDPOINTS.shiftsByDateRange(start, end))
}

/**
 * 根据员工ID获取班次
 */
export function getShiftsByEmployee(employeeId: number | string): Promise<Shift[]> {
  return get<Shift[]>(API_ENDPOINTS.shiftsByEmployee(employeeId))
}

/**
 * 获取单个班次
 */
export function getShift(id: number | string): Promise<Shift> {
  return get<Shift>(API_ENDPOINTS.shift(id))
}

/**
 * 创建班次
 */
export function createShift(shift: Omit<Shift, 'id'>): Promise<Shift> {
  return post<Shift>(API_ENDPOINTS.shifts, shift)
}

/**
 * 更新班次
 */
export function updateShift(id: number | string, updates: Partial<Shift>): Promise<Shift> {
  return patch<Shift>(API_ENDPOINTS.shift(id), updates)
}

/**
 * 删除班次
 */
export function deleteShift(id: number | string): Promise<void> {
  return del(API_ENDPOINTS.shift(id))
}

/**
 * 批量创建班次
 */
export async function batchCreateShifts(shifts: Omit<Shift, 'id'>[]): Promise<Shift[]> {
  const results = await Promise.all(shifts.map(shift => createShift(shift)))
  return results
}

/**
 * 批量删除班次
 */
export async function batchDeleteShifts(ids: (number | string)[]): Promise<void> {
  await Promise.all(ids.map(id => deleteShift(id)))
}
